package br.fic.poo.agenda.persistencia;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class PersistenciaArquivo
{
   public static String ARQUIVO_USUARIO = "usuario.csv";

   public static String ARQUIVO_CONTATO;

   public static String ARQUIVO_COMPROMISSO;
   
   private static PersistenciaArquivo instancia;
   
   public static PersistenciaArquivo getInstancia()
   {
      if (instancia == null)
      {
         instancia = new PersistenciaArquivo();
      }
      return instancia;
   }

   public BufferedWriter criarArquivo(String arquivo)
   {
      File file = new File(arquivo);

      try
      {
         return new BufferedWriter(new FileWriter(file, true));
      }
      catch (Exception e)
      {
         throw new RuntimeException(e);
      }
   }

   public BufferedReader lerArquivo(String arquivo)
   {
      File file = new File(arquivo);

      try
      {
         if (!file.exists())
         {
            new FileWriter(file, true);
         }
         return new BufferedReader(new FileReader(file));
      }
      catch (Exception e)
      {
         throw new RuntimeException(e);
      }
   }
   
   public void renomearArquivo(String arquivo, String nome)
   {
      File file = new File(arquivo);
      file.renameTo(new File(nome));
   }
   
   public void deletarArquivo(String arquivo)
   {
      File file = new File(arquivo);
      file.delete();
   }

   public void fecharCriarArquivo(BufferedWriter arquivo)
   {
      try
      {
         if (arquivo != null)
         {
            arquivo.close();
         }
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
   }
   
   public void fecharLerArquivo(BufferedReader arquivo)
   {
      try
      {
         if (arquivo != null)
         {
            arquivo.close();
         }
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
   }
}
